//--
app.controller('tituloController', 
		['$scope', 'tituloService', 'dialogs', 'utilsService', 
		 function($scope, tituloService, dialogs, utilsService) {
	
	$scope.list = true;
	$scope.isCreate = true;
	$scope.condominio = { };
	$scope.fornecedor = { };
	$scope.imovel = { };
	
	/** Abre a seleção de data de emissão **/
	$scope.openEmissao = function($event) {
	    $event.preventDefault();
	    $event.stopPropagation();
	    $scope.openedEmissao = true;
	};

	/** Abre a seleção de data de vencimento **/
	$scope.openVencto = function($event) {
	    $event.preventDefault();
	    $event.stopPropagation();
	    $scope.openedVencto = true;
	};

	/** Ao sair do campo Valor Titulo, seta o Saldo Titulo com o mesmo valor **/
	$scope.setSaldo = function($event) {
		$scope.unidade.saldotitulo = $scope.unidade.valorTitulo;
	};

	/** Ao sair do campo Data de Vencimento, seta o Vencimento Util **/
	$scope.setVctoUtil = function($event) {
		
		var dtVctoUtil = new Date($scope.unidade.vencimento);
		
		while(dtVctoUtil.getDay() == 0 || dtVctoUtil.getDay() == 6 || utilsService.isFeriado(dtVctoUtil)) {
			dtVctoUtil.setDate(dtVctoUtil.getDate()+1);
		}
		$scope.unidade.vencimentoutil = dtVctoUtil.toLocaleDateString();
		
	};
	
	/** CREATE **/
	$scope.create = function(unidade) {
		
		$scope.unidade = null;
		$scope.list = false;
		$scope.isCreate = true;

		$scope.condominio.selected = undefined;
		$scope.fornecedor.selected = undefined;
		$scope.imovel.selected = undefined;
		
		$scope.retrieveTiposTitulo();
		$scope.retrieveHistoricos();
	};
	
	/** RETRIEVE **/
	$scope.retrieveFilter = function() {

		if($scope.filtro == undefined) {
			return;
		}
		
		var retrieveFilter = tituloService.retrieveFilter($scope.filtro.nomeCondominio);
		retrieveFilter.then(function(resposta) {
			
			if(resposta != null) {
				if(resposta.data.status) {
					$scope.lista = resposta.data.object;
				} else {
					showAlertMessage(resposta.data.message);					
				}
			} else {
				showErrorMessage('Problemas de comunicação...');					
			}
		});
	};

	$scope.retrieveTiposTitulo = function() {
		
		var retrieveFilter = tituloService.retrieveTiposTitulo();
		retrieveFilter.then(function(resposta) {
			
			if(resposta != null) {
				if(resposta.data.status) {
					$scope.tiposTitulo = resposta.data.object;
				} else {
					showAlertMessage(resposta.data.message);					
				}
			} else {
				showErrorMessage('Problemas de comunicação...');					
			}
		});
	};
	
	$scope.retrieveCondominios = function(nomeCondominio) {
		
		if(nomeCondominio == null || nomeCondominio == '') {
			return;
		}

		var retrieveFilter = tituloService.retrieveCondominios(nomeCondominio);
		retrieveFilter.then(function(resposta) {
			
			if(resposta != null) {
				if(resposta.data.status) {
					$scope.condominios = resposta.data.object;
				} else {
					showAlertMessage(resposta.data.message);					
				}
			} else {
				showErrorMessage('Problemas de comunicação...');					
			}
		});
	};

	$scope.fillSelectsByCondominios = function() {
		$scope.retrieveImoveis($scope.condominio.selected.id);
		$scope.retrieveBalancetes($scope.condominio.selected.id);
	};

	
	$scope.retrieveFornecedores = function(nomeFornecedor) {
		
		if(nomeFornecedor == null || nomeFornecedor == '') {
			return;
		}

		var retrieveFilter = tituloService.retrieveFornecedores(nomeFornecedor);
		retrieveFilter.then(function(resposta) {
			
			if(resposta != null) {
				if(resposta.data.status) {
					$scope.fornecedores = resposta.data.object;
				} else {
					showAlertMessage(resposta.data.message);					
				}
			} else {
				showErrorMessage('Problemas de comunicação...');					
			}
		});
	};
	
	$scope.retrieveHistoricos = function() {
		
		var retrieveFilter = tituloService.retrieveHistoricosBalancete();
		retrieveFilter.then(function(resposta) {
			
			if(resposta != null) {
				if(resposta.data.status) {
					$scope.historicos = resposta.data.object;
				} else {
					showAlertMessage(resposta.data.message);					
				}
			} else {
				showErrorMessage('Problemas de comunicação...');					
			}
		});
	};

	$scope.retrieveImoveis = function(idCondominio) {
		
		var retrieveFilter = tituloService.retrieveImoveis(idCondominio);
		retrieveFilter.then(function(resposta) {
			
			if(resposta != null) {
				if(resposta.data.status) {
					$scope.imoveis = resposta.data.object;
				} else {
					showAlertMessage(resposta.data.message);					
				}
			} else {
				showErrorMessage('Problemas de comunicação...');					
			}
		});
	};
	
	$scope.retrieveBalancetes = function(idCondominio) {

		var retrieveFilter = tituloService.retrieveBalancetes(idCondominio);
		retrieveFilter.then(function(resposta) {
			
			if(resposta != null) {
				if(resposta.data.status) {
					$scope.balancetes = resposta.data.object;
				} else {
					showAlertMessage(resposta.data.message);					
				}
			} else {
				showErrorMessage('Problemas de comunicação...');					
			}
		});
		
	};
	
	/** UPDATE 
	$scope.update = function(unidade) {
		
		$scope.unidade = unidade;
		$scope.retrieveCondominios(unidade.condominio.nome);
		$scope.condominio.selected = unidade.condominio;

		$scope.list = false;
		$scope.isCreate = false;
		
	};
	**/

	/** DELETE **/
	$scope.dlete = function(unidade) {

		var dlg = dialogs.confirm('Confirma Exclusão?','Título: ' + unidade.numero);
        dlg.result.then(function(btn){

    		var deleteBack = tituloService.remove(unidade);
    		deleteBack.then(function(resposta) {
    			if(resposta != null) {
    				if(resposta.data.status) {
						var index = $scope.lista.indexOf(unidade);
						$scope.lista.splice(index, 1);
						showSuccessMessage(resposta.data.message);
    				} else {
    					showErrorMessage('Problemas de comunicação...');
    				}
    			}
    		});
        	
        },function(btn){
          console.log('Shame on you for not thinking this is awesome!');
        });
        
	};
	
	$scope.save = function(isValid) {
		
		if(!isValid) {
			return;
		}
		
		$scope.unidade.condominio = $scope.condominio.selected;
		$scope.unidade.fornecedor = $scope.fornecedor.selected;
		
		var dtEmissao = new Date($scope.unidade.emissao);
		$scope.unidade.emissao = dtEmissao.toLocaleDateString();
		var dtVencto = new Date($scope.unidade.vencimento);
		$scope.unidade.vencimento = dtVencto.toLocaleDateString();
		
		var saveBack = tituloService.save($scope.unidade);
		saveBack.then(function(resposta) {
			if(resposta != null) {
				if(resposta.data.status) {
					$scope.unidade = resposta.data.object;
					if($scope.isCreate) {
						if($scope.lista == null) {
							$scope.lista = new Array();
						}
						$scope.lista.push($scope.unidade);
					}
					showSuccessMessage(resposta.data.message);
					$scope.list = true;
				} else {
					showErrorMessage(resposta.data.message);
				}
			} else {
				showErrorMessage('Problemas de comunicação...');
			}
		});
		
	};

	$scope.cancel = function(unidade) {
		$scope.list = true;
	};
		
}]);
